#include "lamplight.h"
#include "ui_lamplight.h"
#include <QDebug>  // 添加调试输出头文件

lamplight::lamplight(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::lamplight)
{
    ui->setupUi(this);

    // 初始化所有灯光状态标签为"关"
    ui->label_13->setText("关");
    ui->label_14->setText("关");
    ui->label_15->setText("关");
    ui->label_16->setText("关");
    ui->label_17->setText("关");
    ui->label_18->setText("关");
}

lamplight::~lamplight()
{
    delete ui;
}

void lamplight::on_pushButton_7_clicked()
{
    emit switchToRemoteControlMain(); // 点击返回按钮，发射"回到智能家居主界面"的信号
}

// 开关1（pushButton）→ 车库灯状态更改
void lamplight::on_pushButton_clicked()
{
    emit sendLamplightCmd("车库灯状态更改");
}

// 开关2（pushButton_2）→ 客厅灯状态更改
void lamplight::on_pushButton_2_clicked()
{
    emit sendLamplightCmd("客厅灯状态更改");
}

// 开关3（pushButton_3）→ 卧室灯状态更改
void lamplight::on_pushButton_3_clicked()
{
    emit sendLamplightCmd("卧室灯状态更改");
}

// 开关4（pushButton_4）→ 厨房灯状态更改
void lamplight::on_pushButton_4_clicked()
{
    emit sendLamplightCmd("厨房灯状态更改");
}

// 开关5（pushButton_5）→ 卫生间灯状态更改
void lamplight::on_pushButton_5_clicked()
{
    emit sendLamplightCmd("卫生间灯状态更改");
}

// 开关6（pushButton_6）→ 书房灯状态更改
void lamplight::on_pushButton_6_clicked()
{
    emit sendLamplightCmd("书房灯状态更改");
}

// 处理网络接收的灯光状态消息
void lamplight::onLampStatusReceived(const QString& message)
{
    qDebug() << "[灯光控制] 收到消息:" << message;
    bool isOn = false; // 标记当前指令是“开启”还是“关闭”
    QString lampName;  // 存储解析出的灯名称（如“车库灯”）

    // -------------------------- 关键修改：解析“车库灯开启”格式 --------------------------
    // 1. 遍历所有灯名称，判断消息是否包含某个灯的名称
    for (auto it = lampNameToIndex.begin(); it != lampNameToIndex.end(); ++it) {
        const QString& name = it.key(); // 取灯名称（如“车库灯”）
        if (message.contains(name)) {   // 消息包含该灯名称（如“车库灯开启”包含“车库灯”）
            lampName = name;
            // 2. 判断消息是否包含“开启”或“关闭”关键词
            if (message.contains("开启")) {
                isOn = true;
            } else if (message.contains("关闭")) {
                isOn = false;
            } else {
                qDebug() << "[灯光控制] 无效状态！消息：" << message;
                return; // 状态无效，直接返回
            }
            break; // 找到匹配的灯，退出循环
        }
    }
    // ---------------------------------------------------------------------------

    // 若未匹配到任何灯名称，直接返回
    if (lampName.isEmpty()) {
        qDebug() << "[灯光控制] 未识别的灯名称！消息：" << message;
        return;
    }

    // 根据灯名称获取索引，更新状态和显示
    int index = lampNameToIndex[lampName];
    if (index >= 1 && index <= 6) {
        lampStates[index-1] = isOn;       // 更新状态数组
        updateLampDisplay(index, isOn);   // 更新UI显示（label文字和颜色）
        qDebug() << "[灯光控制] 更新" << lampName << "状态:" << (isOn ? "开启" : "关闭");
    }
}

// 辅助函数：更新灯光显示
void lamplight::updateLampDisplay(int lampIndex, bool isOn)
{
    QLabel* statusLabel = nullptr;
    // 索引与label的对应关系（1→label_13，2→label_14，…，6→label_18）
    switch(lampIndex) {
        case 1: statusLabel = ui->label_13; break; // 车库灯 → label_13
        case 2: statusLabel = ui->label_14; break; // 客厅灯 → label_14
        case 3: statusLabel = ui->label_15; break; // 卧室灯 → label_15
        case 4: statusLabel = ui->label_16; break; // 厨房灯 → label_16
        case 5: statusLabel = ui->label_17; break; // 卫生间灯 → label_17
        case 6: statusLabel = ui->label_18; break; // 书房灯 → label_18
        default: return;
    }

    // 根据状态更新label文字和颜色
    if (statusLabel) {
        statusLabel->setText(isOn ? "开启" : "关闭"); // 显示“开启”/“关闭”
        statusLabel->setStyleSheet(isOn ? "color: green;" : "color: red;"); // 绿色=开，红色=关
    }
}
